package ${basePackage}.service.system;

import ${basePackage}.core.model.PageData;
import ${basePackage}.core.model.PageWrap;
import ${basePackage}.dao.system.dto.QuerySystemDictDataDTO;
import ${basePackage}.dao.system.model.SystemDictData;
import ${basePackage}.dao.system.vo.SystemDictDataListVO;

import java.util.List;

/**
 * 字典数据Service定义
 * @author Eva.Caesar Liu
 * @since 2023/05/17 17:53
 */
public interface SystemDictDataService {

    /**
     * 创建
     *
     * @param systemDictData 字典数据
     * @return Integer
     */
    Integer create(SystemDictData systemDictData);

    /**
     * 主键删除
     *
     * @param id 主键
     */
    void deleteById(Integer id);

    /**
     * 批量主键删除
     *
     * @param ids 主键列表
     */
    void deleteByIdInBatch(List<Integer> ids);

    /**
     * 主键更新
     *
     * @param systemDictData 字典数据
     */
    void updateById(SystemDictData systemDictData);

    /**
     * 批量主键更新
     *
     * @param systemDictDatas 字典数据列表
     */
    void updateByIdInBatch(List<SystemDictData> systemDictDatas);

    /**
     * 主键查询
     *
     * @param id 主键
     * @return SystemDictData
     */
    SystemDictData findById(Integer id);

    /**
     * 条件查询单条记录
     *
     * @param systemDictData 查询条件
     * @return SystemDictData
     */
    SystemDictData findOne(SystemDictData systemDictData);

    /**
     * 条件查询
     *
     * @param systemDictData 查询条件
     * @return List<SystemDictData>
     */
    List<SystemDictData> findList(SystemDictData systemDictData);

    /**
     * 根据字典编码查询
     *
     * @param dictCode 字典编码
     * @return List<SystemDictData>
     */
    List<SystemDictData> findByDictCode(String dictCode);

    /**
     * 分页查询
     *
     * @param pageWrap 分页参数
     * @return PageData<SystemDictDataListVO>
     */
    PageData<SystemDictDataListVO> findPage(PageWrap<QuerySystemDictDataDTO> pageWrap);

    /**
     * 条件统计
     *
     * @param systemDictData 统计条件
     * @return long
     */
    long count(SystemDictData systemDictData);
}
